package cn.bellychang.leetcode.question876;

/**
 * @author ChangLiang
 * @date 2020/11/2
 */
public class Solution {

    public ListNode middleNode(ListNode head) {
        // 每次走两步
        ListNode fast = head;
        // 每次走一步
        ListNode slow = head;
        // 循环不变量 fast指针走到了最后一个元素
        while (fast != null && fast.next != null) {

            // 维持循环不变量
            fast = fast.next.next;

            slow = slow.next;
        }

        return slow;
    }
}
